package fightplan.actions;

import java.awt.event.ActionEvent;
import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

import fightplan.Mode;
import fightplan.business.Tournament;
import fightplan.persistence.ExcelCategoryImport;
import fightplan.views.MainView;

@SuppressWarnings("serial")
public class ImportExcelCategoriesAction extends UndoableAction {

	private MainView mainView;

	public ImportExcelCategoriesAction(MainView mainView) {
		super("Kategorien importieren", mainView, "Kategorien aus Excelliste importieren");
		this.mainView = mainView;
	}

	public boolean doAction(ActionEvent actionEvent) {
		Tournament t = (Tournament) mainView.getTournament().getValue();

		if (t.getMode() != Mode.GENERIC) {
			JOptionPane.showMessageDialog(mainView,
					"Beim aktuellen Turnier handelt es sich nicht um ein allgemeines Turnier\n"
							+ "Es ist daher kein Kategorie-Import möglich", "Nicht möglich", JOptionPane.ERROR_MESSAGE);
			return false;
		}

		if (t.getFighters().size() > 0) {
			JOptionPane.showMessageDialog(mainView, "Es wurden bereits Teilnehmer erfasst."
					+ "\nDiese werde nicht mehr automatisch den neu importierten Kategorien zugeteilt.", "Hinweis",
					JOptionPane.WARNING_MESSAGE);
		}
		JFileChooser fileChooser = new JFileChooser();
		fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
		fileChooser.setDialogTitle("Excel - Kategorien - Liste auswählen");
		fileChooser.setCurrentDirectory(new File("."));
		fileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
			public boolean accept(File f) {
				return !f.isFile() || f.getName().endsWith(".xls");
			}

			public String getDescription() {
				return "*.xls (Excelfile)";
			}
		});
		if (fileChooser.showDialog(mainView, "Importieren") == JFileChooser.APPROVE_OPTION) {
			String question = "Sollen die Kategorie-Namen importiert werden?\n";
			question += "(Wird nicht empfohlen, das Programm kann meist\neindeutigere Namen erzeugen.)";
			boolean importNames = JOptionPane.showConfirmDialog(mainView, question, "Kategorie Namen",
					JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
			ExcelCategoryImport.imprtCategories((Tournament) mainView.getTournament().getValue(),
					fileChooser.getSelectedFile(), importNames);
			return true;
		}
		return false;
	}

}